LL1P00: PROC;
/****************************************************************
*              LL(1) GRAMMAR ANALYZER - PHASE 00		*
*PURPOSE:                                                       *
*    THIS PROGRAM IS RESPONSIBLE FOR INITIALIZING THE LANGUAGE  *
*    ANALYZER COMMON AREAS.               			*
*INPUT:                                                         *
*OUTPUT:                                                        *
*OUTLINE:                                                       *
*REMARKS:                                                       *
****************************************************************/

/****************************************************************
* * * * * * * * * * * COMMON DATA DEFINITIONS * * * * * * * * * *
****************************************************************/

/*	* * *  COMMON REPLACEMENTS  * * *	*/
%REPLACE TRUE BY '1'B;
%REPLACE FALSE BY '0'B;

%INCLUDE 'LL1CMN.DCL';	/* GET COMMON AREAS. */
	DCL I FIXED;

/****************************************************************
* * * * * * * * * * * COMMON PROCUDURES * * * * * * * * * * * * *
****************************************************************/

%INCLUDE 'LL1PRC.DCL';  /* GET COMMON PROCEDURES. */


/****************************************************************
* * * * * * * * * * * MAIN LINE PROCEDURE * * * * * * * * * * * *
****************************************************************/

/* DO INITIALIZATION. */
      PUT SKIP LIST('BEGINNING PHASE 00 PROCESSING.');

/*	INITIALIZE COMMON AREAS. */
	PUT SKIP LIST('INITIALIZING COMMON AREAS...');
	NUMVOC=0;		/* NUMBER OF VOCABULARY ELEMENTS */
	TRM='';			/* TERMINAL TOKEN INDEX */
	NTRM='';		/* NON-TERMINAL TOKEN INDEX */
	ALIVE='';		/* ALIVE NON-TERMINAL INDEX */
	DEAD='';		/* DEAD NON-TERMINAL INDEX */
	NLNTRM='';		/* NULL NON-TERMINAL INDEX */
	STRSYM=ASCII(0);
	NUMPRD=0;		/* NUMBER OF PRODUCTIONS IN GRAMMAR */
	DO I=1 TO 254;		/* VOCABULARY */
	   VOC(I)='';
	END;
	DO I=1 TO MAX_PROD;	/* PRODUCATIONS */
	   LHS(I)='';
	   RHS(I)='';
	   NULPRD(I)=0;
	END;

/*	OPEN LIST FILE. */
	PUT SKIP LIST('OPENING LIST FILE...');
	OPEN FILE(LSTFIL) STREAM OUTPUT PRINT LINESIZE(132) 
		PAGESIZE(60) TITLE('$1.PRN');
	LSTOPN=TRUE;		/* SET FOR OPEN.*/
	PUT FILE(LSTFIL) PAGE;

/*	ESTABLISH DEFAULTS FOR FLAGS. */
	PUT SKIP LIST('INITIALIZING FLAGS...');
	FLAGS1(1)=TRUE;		/* SET FOR LIST INPUT IN PHASE 1.*/
	FLAGS1(2)=FALSE;	/* SET FOR LIST TABLES AT END OF
				   PHASE 1. */
	TRACE1(1)=FALSE;	/* SET FOR TRACE PHASE 1 - GETTOK. */
	TRACE1(2)=FALSE;	/* SET FOR TRACE PHASE 1 - PROD. */

/* RETURN TO CALLER. */
     PUT SKIP LIST('PHASE 00 PROCESSING COMPLETE.');
     END LL1P00;
